var VO = {};
(function(VO){
	var indexes = {};
	VO.plugin = function(index,methodsmap){//add plug-in methods
		var plugin = indexes[index];
		if(typeof(plugin) == 'undefined'){
			indexes[index] = {};
			plugin = indexes[index];
		}
		for(var method in methodsmap){
			plugin[method] = methodsmap[method];
		}
	};
	VO.invoke = function(index,method){//invoke plug-in methods
		var plugin = indexes[index];
		if(typeof(plugin)!='undefined'&&typeof(plugin[method])!='undefined'){
			plugin[method]();
		}
	};
	VO.remove = function(index,methods){//delete plug-in methods
		var plugin = indexes[index];
		if(typeof(plugin) != 'undefined'){
			for(var i = 0;i<methods.length;i++){
				delete plugin[methods[i]];
			}
		}
	};
})(VO);